1. Field of the Invention
The present invention relates to a computer system, and deals more particularly with a method, system, and computer-readable code that enables a sending or receiving application to dynamically change transmission priorities of queued messages.
2. Description of the Related Art
Message queuing is a technique whereby application programs communicate with each other using messages and queues. The applications may be running on the same computer, or on different computers. When one application wishes to send a message to another application, it passes the message to a queue manager, which then forwards the message to the queue manager used by the target application. The target application then retrieves the message by making a request of its queue manager. When the applications are running on the same computer, they typically use a shared queue manager; when the applications are on different computers, each computer may use a different queue manager. This approach enables message exchange to occur asynchronously, because the application generating the message does not need to await an acknowledgement from the target application. This, in turn, also allows the message sending process to operate very quickly. Examples of commercially-available message queuing systems are MQSeries from the International Business Machines Corporation (xe2x80x9cIBMxe2x80x9d), and Microsoft Corporation""s Message Queue (MSMQ) product. (xe2x80x9cMQSeriesxe2x80x9d is a registered trademark of IBM.) Reference may be made to xe2x80x9cIBM Messaging and Queuing Seriesxe2x80x94Technical Referencexe2x80x9d (SC33-0850-01, 1993) for a more detailed description of messaging and queuing.
It is commonplace today for computer users to connect their machines to other computers, known as xe2x80x9cserversxe2x80x9d, through a network. The network may be a private network, such as a corporate intranet of networked computers that is accessible only to computer users within that corporation. Or, it may a public network, such as the Internet or World Wide Web. The Internet is a vast collection of computing resources, interconnected as a network, from sites around the world.
The user may connect his computer to a server using a xe2x80x9cwiredxe2x80x9d connection, or a xe2x80x9cwirelessxe2x80x9d connection. Wired connections are those that use physical media such as cables and telephone lines, whereas wireless connections use media such as satellite links, radio frequency waves, and infrared waves. Many connection techniques can be used with these various media, such as: using the computer""s modem to establish a connection over a telephone line; using a Local Area Network (LAN) card such as Token Ring or Ethernet; using a cellular modem to establish a wireless connection; etc. The user""s computer may be any type of computer processor, including laptop, handheld or mobile computers; vehicle-mounted devices; desktop computers; mainframe computers; etc., having processing and communication capabilities. The remote server, similarly, can be one of any number of different types of computer which have processing and communication capabilities. These techniques are well known in the art, and the hardware devices and software which enable their use are readily available. Hereinafter, the user""s computer will be referred to as a xe2x80x9cworkstationxe2x80x9d, and use of the terms xe2x80x9cworkstationxe2x80x9d or xe2x80x9cserverxe2x80x9d refers to any of the types of computing devices described above.
A user of the Internet typically accesses and uses the Internet by establishing a network connection through the services of an Internet Service Provider (ISP). An ISP provides computer users the ability to dial a telephone number using their workstation modem (or other connection facility, such as satellite transmission), thereby establishing a connection to a remote computer owned or managed by the ISP. This remote computer then makes services available to the user""s computer, hence such computers are often referred to as xe2x80x9cserversxe2x80x9d. While many networking applications exchange messages synchronously, message queuing systems may be used in this environment where communication is asynchronous. Typical services include: queuing mail to be delivered when a user connects to the server; distributing data base updates to subscribing clients; and delivering application data files that have been modified, where the target of the delivery may be a collection of occasionally-connected mobile client user systems. Similar facilities are typically available when the user connects to a server in an intranet, or an extranet (that is, a network owned or managed by another company, and which provides services in a similar manner to the Internet or an intranet).
These are examples of a client-server model of computing, where the machine at which the user requests information is referred to as the client, and the computer that locates the information and returns it to the client is the server. The client-server model may be extended to what is referred to as a xe2x80x9cthree-tier architecturexe2x80x9d. This architecture places the server in the middle tier, where the added tier typically represents data repositories of information that may be accessed by the server as part of the task of processing the client""s request. This three-tiered architecture recognizes the fact that many client requests do not simply require the location and return of static data, but require an application program to perform processing of the client""s request in order to dynamically create the data to be returned.
As more people connect their workstations to networks, the number of messages and files being sent is skyrocketing. (Hereinafter, the terms xe2x80x9cmessagexe2x80x9d and xe2x80x9cfilexe2x80x9d are used interchangeably when referring to data being sent through a network, unless otherwise stated.) Coupled with this increase in the number of network users and files is an increase in the size of the files commonly being sent. For example, a short e-mail message with a relatively simple graphic image attached may be on the order of several hundred thousand bytes of data. Users may send and receive many such files over the course of a day""s work, or in their personal network communications. At the same time, the popularity of limited-storage workstations (such as handheld computers), which a user may use in disconnected mode for some period of time, is also growing. xe2x80x9cDisconnected modexe2x80x9d refers to using the workstation without currently having a connection to a network. For example, a salesperson may use a handheld computer to record sales information throughout the workday while working at customer locations, and only connect to a network to transmit the data to his company""s server at the end of the workday. Or, a user may work with data stored locally on his workstation throughout the day, making brief network connections when he has data to transmit, or wishes to see if there is data for him to receive from a server (e.g. by connecting to his e-mail service to see if he has any new messages). This latter scenario is common where a user is being charged for network connection time, such as when he uses a cellular service, as a way of reducing costs by minimizing the duration of the network connection. Many other examples of using devices in disconnected mode are possible.
Priorities are often assigned to messages being sent through the network, either by the sending application or directly by the user, in order to control the use of network bandwidth. Higher priority messages are then sent before lower priority messages. Aging algorithms are sometimes used to increase the priority of messages, in order to limit the amount of time a message spends waiting to be sent. These algorithms typically monitor the wait time for messages, and increase the message priority each time the wait exceeds one or more predefined threshold values.
Other than aging algorithms, priority mechanisms are generally static: once an application has sent a message, it no longer has the ability to affect the priority of message transmission. Also, the priority is usually set by the sending application. The receiving application has no means to affect the network priority of in-transit data.
There are many situations in which conditions can change between the time messages are queued for transmission, and when the messages are actually sent, where it would be beneficial to change the message priority to reflect the changed conditions. In a mobile environment, for example, when the user runs software applications in disconnected mode as discussed above, the time period between queuing a message and the actual transmission of the message can be relatively long. Or, network conditions such as server outages or route congestion may result in messages being queued for long periods before being transmitted. The longer the delay, the more likely it is that conditions related to message priority will change. The user may simply change his mind about the priority assigned to a transmission, or other more important needs may arise that reduce the desired priority of previously-queued messages. For example, the highest defined priority may have been assigned for transmitting a data object that will require a significant length of time to transmit, and while that message is waiting, something even more important needs to be sent. Or, a server application may queue a file containing updated personnel instructions, and set a low priority for transmitting the file to all the managers in the companyxe2x80x94but a specific manager may need this information immediately, to answer a telephone query. Conditions at the receiving side may affect the desired transmission priority from the sender. For example, the urgency of receiving a large data object may change when more important data is needed at the receiver. A constrained device, such as a handheld device, may wish to associate different priorities with receiving data when it is remotely connected (and may have a slow unreliable connection and very limited storage capacity available) versus when it is docked (and may have a faster connection and much greater amount of storage available through its docking connection). Or, changes in network conditions (such as congestion due to heavy traffic) may warrant a change in the relative priority of large data transmissions. However, there are no known techniques that allow dynamically changing the priority of messages that are already in transitxe2x80x94that is, messages which are either queued waiting for transmission, or are in the process of being transmitted, or have been received but not delivered to the applicationxe2x80x94in order to respond to changing conditions.
Accordingly, what is needed is a technique that enables senders and receivers of messages to dynamically change the transmission priority of in-transmit messages to account for changed conditions. The technique of the present invention enables the sending application or the receiving application (and their human users) to change transmission priorities of messages dynamically. A technique is also defined for providing a receiver with an advance notice of intended message priority, enabling the receiver to request a priority change before transmission begins. These techniques provide the flexibility to respond to changes in dynamic, volatile network environments, as well as changes in the user""s wishes or requirements. A ranking technique is defined, whereby requests to change priority may be accepted or denied through a ranking algorithm that resolves potential conflicts in desired transmission priority.
An object of the present invention is to provide a technique with which sending applications or receiving applications (and their human users) can change transmission priorities of in-transit messages dynamically.
Another object of the present invention is to provide a technique with which a receiver can receive an advance notice of intended message priority, enabling the receiver to request a priority change before transmission begins.
It is another object of the present invention to provide a ranking technique for use with dynamic priority change requests, whereby requests to change priority may be accepted or denied through a ranking algorithm that resolves potential conflicts in desired transmission priority.
Other objects and advantages of the present invention will be set forth in part in the description and in the drawings which follow and, in part, will be obvious from the description or may be learned by practice of the invention.
To achieve the foregoing objects, and in accordance with the purpose of the invention as broadly described herein, the present invention provides a software-implemented technique for use in a computing environment connected to a network, for implementing a scheduling system that allows a sender and a receiver to change priorities of queued messages, comprising: a sending application operating at the sender; a receiving application operating at the receiver; a plurality of data objects to be sent from the sending application to the receiving application; a queuing system at each of the sender and receiver, comprising a persistent message store, a subprocess for queuing a plurality of messages in the message store, and a subprocess for dequeuing the queued messages; a subprocess for requesting a change from an existing priority of a specified data object to a new priority, wherein the specified data object may be represented in the message store by one or more of the queued messages; a subprocess for locating any of the queued messages representing the specified data object; a subprocess for determining if the existing priority of the data object will be changed to the new priority; and a subprocess for modifying an order of delivery of the located messages when the subprocess for determining has a positive response. Preferably, the subprocess for modifying further comprises changing a priority of each of the located messages to the new priority. The subprocess for determining preferably further comprises using a priority resolution subprocess, which preferably further comprises a subprocess for using rank proposals for each of the sender and receiver, where the rank proposals are exchanged at least once between said sender and said receiver. The rank proposals are preferably one of: local primary, remote primary, sender primary, receiver primary, and peer. Additionally, the technique may further comprise a subprocess for issuing an advance notification of an intended priority to be used as the existing priority for a subsequently-sent data object. The subprocess for requesting a change may further comprise a subprocess for accepting the change request from a user of either the sending application or the receiving application.